<?php
class Delivery_Model_DbTable_Promociones
	extends Delivery_Model_DbTable_Desactivable

{
	protected $_name = 'promociones';
	protected $_primary = 'idPromocion';
	
	public function insert( $promocion ){
		
		return parent::insert(
			$this->_fecha( $this->_getData( $promocion ), true, true)	
		);
	}
	
	public function update( $promocion ){
		
		$data = $this->_getData( $promocion );		
     	
     	return parent::update(
     		$this->_fecha( $this->_getData( $promocion ), false, true), 
     		array('idPromocion = ?' => $promocion->idPromocion)
     	);
	}
	
	
	public function delete( $promocion ){
		return parent::delete(
			array( 'idPromocion = ?' => $promocion->idPromocion)
		);
	}
	
	
	public function getById( $idPromocion, $idNegocio = null)
	{
		
		$select = $this->select()->where('idPromocion = ?', $idPromocion, Zend_Db::INT_TYPE);
		
		if ( $idNegocio!= null ){
			$select->where('idNegocio = ?', $idNegocio, Zend_Db::INT_TYPE);
		}
		
		return $this->_db->fetchRow($select);
	}
	
	public function getByIds( $idsPromocion, $idNegocio = null)
	{
		
		$select = $this->select()->where('idPromocion IN (?)', $idsPromocion, Zend_Db::INT_TYPE);
		
		if ( $idNegocio!= null ){
			$select->where('idNegocio = ?', $idNegocio, Zend_Db::INT_TYPE);
		}
		
		return $this->_db->fetchAssoc($select);
	}
	
	public function getByNegocio( $idNegocio ){
		
		$select = $this->select();
		
		if ( is_int($idNegocio) ){
			$select->where('idNegocio = ?', $idNegocio, Zend_Db::INT_TYPE);
		} else {
			$select->where('idNegocio IN (?)', $idNegocio, Zend_Db::INT_TYPE);
		}
		
		return $this->_db->fetchAssoc($select);
	}
	
	
	
	public function getByParams( $params, $offset = null, $limit = null, $order = null ){
		
		$select = $this->select();
		
		
		if ( isset($params['idNegocio'])){
			$select->where('idNegocio = ?', $params['idNegocio'], Zend_Db::INT_TYPE);
		}
		
		if ( $order ){
			$select->order( $order );
		}
		
		if ( $limit && !is_null($offset) ){
			$select->limit( $limit, $offset );
		}
		
		
		return $this->_db->fetchAssoc($select);
	}
	
	public function countByParams( $params )
	{
		
		$select = $this->select();
		
		if ( isset($params['idNegocio'])){
			$select->where('idNegocio = ?', $params['idNegocio'], Zend_Db::INT_TYPE);
		}
		
		$results = $this->_db->fetchAssoc($select);
		
		return count($results);
	}
	
	public static function inAnyOrder( $idPromocion )
	{
	
		$dbTable = Delivery_Model_Factory::dbTable('PedidoPromociones');
		$rowset = $dbTable->getById( $idPromocion );		
		
		return empty($rowset) ? false : true;
	}
	
	
	protected function _getData( $promociones )
	{
		return array (
			'nombre'		=> $promociones->nombre,
   			'idNegocio'		=> $promociones->idNegocio,
   			'descripcion'	=> $promociones->descripcion,	   			
   			'precio'		=> $promociones->precio,
			'super'			=> is_null($promociones->super) ? 0 : $promociones->super,
   			'activo'		=> $promociones->activo
   		);	
	}
	
}